export enum ErrorCode {
    Success = 0, // 无错误
    InternalServerError = 500, // 服务器内部错误
    ParameterError = 1001, // 参数错误
    PermissionDenied = 1002, // 权限不足
    DuplicatePrimaryKey = 1003, // 数据库主键重复
    DatabaseRecordNotFound = 1004, // 未找到数据库记录
    UserIdNotExist = 1101, // 用户 ID 不存在
    UserAlreadyRegistered = 1102, // 用户已注册
    GroupNotExist = 1201, // 组不存在
    GroupAlreadyExist = 1202, // 组已存在
    UserNotInGroup = 1203, // 用户不在组中
    CorporationDissolved = 1204, // 集团已解散
    UnsupportedGroupType = 1205, // 不支持的组类型
    GroupApplicationHandled = 1206, // 团体申请已办理，无需重复
    CannotAddSelfAsFriend = 1301, // 无法将自己添加为好友
    YouAreBlockedByUser = 1302, // 你被对方拉黑了
    UserIsNotYourFriend = 1303, // 对方不是你的朋友
    AlreadyFriends = 1304, // 已经是朋友，无需重新申请
    MessageReadDisabled = 1401, // 消息阅读功能已关闭
    MutedInGroup = 1402, // 你被静音了，不能在群里说话
    GroupMuted = 1403, // 群组已静音，无法说话
    MessageRevoked = 1404, // 该消息已被撤回
    AuthorizationExpired = 1405, // 授权已过期
    TokenExpired = 1501, // 令牌已过期
    InvalidToken = 1502, // 令牌无效
    InvalidTokenFormat = 1503, // 令牌格式错误
    TokenNotYetValid = 1504, // 令牌尚未生效
    UnknownTokenError = 1505, // 未知令牌错误
    TokenKickedOut = 1506, // 令牌已被踢出，无效
    TokenNotExist = 1507, // 令牌不存在
    ConnectionCountExceeded = 1601, // 连接计数超出网关限制
    InvalidHandshakeParameters = 1602, // 连接握手参数错误
    FileUploadExpired = 1701, // 文件上传已过期
}

export  class ErrorType {
    private static errorMap: Map<ErrorCode, string> = new Map<ErrorCode, string>([
        [ErrorCode.Success, '✅ 无错误'],
        [ErrorCode.InternalServerError, '🚨 服务器内部错误'],
        [ErrorCode.ParameterError, '❌ 参数错误'],
        [ErrorCode.PermissionDenied, '🚫 权限不足'],
        [ErrorCode.DuplicatePrimaryKey, '💽 数据库主键重复'],
        [ErrorCode.DatabaseRecordNotFound, '🚫 未找到数据库记录'],
        [ErrorCode.UserIdNotExist, '🚫 用户 ID 不存在'],
        [ErrorCode.UserAlreadyRegistered, '🚫 用户已注册'],
        [ErrorCode.GroupNotExist, '🚫 组不存在'],
        [ErrorCode.GroupAlreadyExist, '🚫 组已存在'],
        [ErrorCode.UserNotInGroup, '🚫 用户不在组中'],
        [ErrorCode.CorporationDissolved, '🚫 集团已解散'],
        [ErrorCode.UnsupportedGroupType, '🚫 不支持的组类型'],
        [ErrorCode.GroupApplicationHandled, '🚫 团体申请已办理，无需重复'],
        [ErrorCode.CannotAddSelfAsFriend, '🚫 无法将自己添加为好友'],
        [ErrorCode.YouAreBlockedByUser, '🚫 你被对方拉黑了'],
        [ErrorCode.UserIsNotYourFriend, '🚫 对方不是你的朋友'],
        [ErrorCode.AlreadyFriends, '🚫 已经是朋友，无需重新申请'],
        [ErrorCode.MessageReadDisabled, '🚫 消息阅读功能已关闭'],
        [ErrorCode.MutedInGroup, "🚫 你被静音了，不能在群里说话"],
        [ErrorCode.GroupMuted, "🚫 群组已静音，无法说话"],
        [ErrorCode.MessageRevoked, '🚫 该消息已被撤回'],
        [ErrorCode.AuthorizationExpired, '🚫 授权已过期'],
        [ErrorCode.TokenExpired, '🚫 令牌已过期'],
        [ErrorCode.InvalidToken, '🚫 令牌无效'],
        [ErrorCode.InvalidTokenFormat, '🚫 令牌格式错误'],
        [ErrorCode.TokenNotYetValid, '🚫 令牌尚未生效'],
        [ErrorCode.UnknownTokenError, '🚫 未知令牌错误'],
        [ErrorCode.TokenKickedOut, '🚫 令牌已被踢出，无效'],
        [ErrorCode.TokenNotExist, '🚫 令牌不存在'],
        [ErrorCode.ConnectionCountExceeded, '🚫 连接计数超出网关限制'],
        [ErrorCode.InvalidHandshakeParameters, '🚫 连接握手参数错误'],
        [ErrorCode.FileUploadExpired, '🚫 文件上传已过期'],
    ]);

    public static getMessage(code: ErrorCode): string | undefined {
        return this.errorMap.get(code);
    }
}


